package com.duothread;

public class PhoneFactory {
    private String name;  // 手机名字
    private double price; // 手机价格
    private int i = 0;  // 定义一个变量用来决定生产哪部手机
    private boolean hasPhone = false;  // 定义一个变量标记是否有手机，true代表有手机

    // 生产手机的方法
    public synchronized void produce() {
        // 先判断是否有手机
        if (hasPhone) {
            // 有手机，则暂不生产，线程等待
            try {
                this.wait();
            } catch (InterruptedException e) {
                e.printStackTrace();
            }
        }
        // 没有手机，则生产
        // 偶数生产iPhone，奇数生产华为
        if (i % 2 == 0) {
            this.name = "iphone";
            this.price = 6888;
        } else {
            this.name = "HuaWei";
            this.price = 6288;
        }
        // 修改标记，并进行唤醒另一线程
        this.hasPhone = true;
        this.notify();
        i++;
    }

    // 消费手机的方法
    public synchronized void get() {
        if (!hasPhone) {
            // 没有手机，则不消费，等待
            try {
                this.wait();
            } catch (InterruptedException e) {
                e.printStackTrace();
            }
        }
        // 说明有手机，则消费
        System.out.println("消费了：" + this.name + "，价格是：" + this.price);
        // 消费完后，手机肯定被消费了
        this.hasPhone = false;
        // 唤醒生产线程进行生产
        this.notify();
    }
}